home *** CD-ROM | disk | FTP | other *** search
/ GFX Sensations 1 / Graphic Sensations - Volume 1.iso / tools / amiga / gfx_card / animextd.lha / AnimExtender.oprx < prev   
Encoding:
Text File  |  1994-05-22  |  8.3 KB  |  342 lines

  1. /*                              */
  2. /*     ANIM-EXTENDER v1.1c      */
  3. /*                              */
  4. /*      by Carmen Rizzolo       */
  5. /*                              */
  6.  
  7. Options Results
  8. Address 'OpalPaint_Rexx'
  9.  
  10. Version
  11. Parse Var Result VerThingy ' ' OpalName ' ' VersionNum ' ' DateNum
  12.  
  13. If Left(VersionNum,3) < 2.3 Then Do
  14.     AskBool 'It appears that you are using OpalPaint v' || VersionNum || '\n\nAnim-Extender requires OpalPaint v2.3 or higher\n\nShall I continue?'
  15.     If Result = 0 Then Do
  16.         Okay 'Exiting...'
  17.         Exit
  18.         End
  19.     End
  20.  
  21. AnimPathDefault = "Pathname"
  22. Root = 'pic.'
  23. Zero = '0'
  24. Corrector = 0
  25.  
  26. Menu DISABLE
  27. Call ConfirmAnimExtender()
  28. Call GetAnimPath()
  29. Call GetStartFrame()
  30. Call GetEndFrame()
  31. Call VerifyFrames()
  32. Call GetExtendValues()
  33. If ExtFirst > 0 | ExtLast > 0 Then Call MakeExtWorkDrawer()
  34. If ExtFirst > 0 Then Call DoFirstExtend()
  35. If ExtLast > 0 Then Call DoLastExtend()
  36. If ExtFirst > 0 | ExtLast > 0 Then Call DeleteExtWorkDrawer()
  37. Call AllDone()
  38. Exit
  39.  
  40. ConfirmAnimExtender:
  41.     Address 'OpalPaint_Rexx'
  42.  
  43.     ReqBuild '420 130 " "'
  44.     AddBox '10 10 400 110'
  45.     AddBox '15 15 5 5 Raised'
  46.     AddBox '-20 15 5 5 Raised'
  47.     AddBox '15 -20 5 5 Raised'
  48.     AddBox '-20 -20 5 5 Raised'
  49.     AddBox '47 -53 106 31'
  50.     AddBox '-153 -53 106 31'
  51.     AddHeading 'CenterX 20 "Anim Extender v1.1c"'
  52.     AddHeading 'CenterX 35 "an Arexx script for OpalPaint v2.3 or higher"'
  53.     AddHeading 'CenterX 45 "by Carmen Rizzolo"'
  54.     AddGadget 'Button YesButton 50 -25 Medium "Continue"'
  55.     AddGadget 'Button NoButton -50 -25 Medium "Quit"'
  56.  
  57.     Request NoOK NoCancel
  58.  
  59.     GadgetStatus NoButton
  60.     If Result = 1 Then Do
  61.         Exit
  62.         End
  63.     Return
  64.  
  65. GetAnimPath:
  66.     Address 'OpalPaint_Rexx'
  67.     PathWarn = 1
  68.  
  69.     Do Forever
  70.         LeaveBool = 1
  71.         ReqBuild '450 161 "Choose animation pathname"'
  72.         AddBox '10 23 430 105'
  73.         AddText 'CenterX 29 "NOTE: Pathnames must end with a / character"'
  74.  
  75.         AddText 'CenterX 50 "Pathname"'
  76.         AddGadget 'String ReqAnimPathName CenterX 60 Large'
  77.         AddGadget 'Button SourceReq 25 60 80 20 " "'
  78.         AddBox '22 57 86 26'
  79.         AddHeading '29 67 "REQUESTOR"'
  80.  
  81.         AddGadget 'Button OKButton CenterX -5 Medium "Proceed"'
  82.  
  83.         InitGadget 'ReqAnimPathName ' || AnimPathDefault
  84.  
  85.         Request NoOK NoCancel
  86.  
  87.         GadgetStatus ReqAnimPathName
  88.         AnimPathName = Result
  89.  
  90.         GadgetStatus SourceReq
  91.         If Result = 1 Then Do
  92.             If PathWarn = 1 Then Do
  93.                 ReqBuild '369 76 " "'
  94.                 AddBox '5 5 358 65'
  95.                 AddText 'CenterX 10 "NOTE: You are about to use a file requestor"'
  96.                 AddText 'CenterX 20 "to choose a PATHNAME.  Do not select any"'
  97.                 AddText 'CenterX 30 "filenames.  Get the pathname only!"'
  98.                 AddGadget 'Button Okeedoke CenterX 40 Medium "Proceed"'
  99.                 Request NoOK NoCancel
  100.                 PathWarn = 0
  101.                 End
  102.             AskFileName 'Get SOURCE animation PATHNAME' "OpalPaint:" ''
  103.             AnimPathName = Result
  104.             End
  105.  
  106.         If Right(AnimPathName,1) ~= '/' Then AnimPathName = AnimPathName || '/'
  107.  
  108.         AnimPathDefault = AnimPathName
  109.  
  110.         Finder = Exists(AnimPathName)
  111.         If Finder = 1 Then Leave
  112.         If Finder = 0 Then Okay 'ERROR: Drawer not found!  Try agian...'
  113.         End
  114.  
  115.     Return AnimPathName
  116.  
  117. GetStartFrame:
  118.     Address 'OpalPaint_Rexx'
  119.     ReqBuild '210 97 "Enter Start Frame Number"'
  120.     AddBox '5 25 199 39'
  121.  
  122.     AddGadget 'Integer StartGad CenterX 35 50 10 1 9999'
  123.  
  124.     AddGadget 'Button OkayButton CenterX -5 Medium "Proceed"'
  125.     Request NoOK NoCancel
  126.  
  127.     GadgetStatus StartGad
  128.     StartFrame = Result
  129.  
  130.     Return StartFrame
  131.  
  132. GetEndFrame:
  133.     Address 'OpalPaint_Rexx'
  134.     ReqBuild '210 97 "Enter Final Frame Number"'
  135.     AddBox '5 25 199 39'
  136.  
  137.     AddGadget 'Integer EndGad CenterX 35 50 10 ' || StartFrame || ' 9999'
  138.  
  139.     AddGadget 'Button OkayButton CenterX -5 Medium "Proceed"'
  140.     InitGadget EndGad (StartFrame + 1)
  141.     Request NoOK NoCancel
  142.  
  143.     GadgetStatus EndGad
  144.     EndFrame = Result
  145.  
  146.     Return EndFrame
  147.  
  148. VerifyFrames:
  149.     Address 'OpalPaint_Rexx'
  150.     Menu ENABLE
  151.     DisplayStatus 'Verify...'
  152.     Do A = StartFrame to EndFrame
  153.         Call GetIFF()
  154.         Finder = Exists(AnimPathName || IFF)
  155.         If Finder = 0 Then Do
  156.             Okay 'FATAL ERROR: ' || AnimPathName || IFF || ' not found!\n\nExiting...'
  157.             Exit
  158.             End
  159.         End
  160.     Menu DISABLE
  161.     Return
  162.  
  163. GetExtendValues:
  164.     Address 'OpalPaint_Rexx'
  165.     ReqBuild '420 189 "Anim Extender"'
  166.  
  167.     AddBox '5 25 409 74'
  168.     AddText 'CenterX 30 "Extend First frame"'
  169.  
  170.     AddGadget 'Check InsertGad 14 39 Medium'
  171.     AddText 'Right InsertGad 5 6 "Insert"'
  172.     AddGadget 'Check AppendGad 93 39 Medium'
  173.     AddText 'Right AppendGad 5 6 "Append"'
  174.  
  175.     AddGadget 'HProp ExtFirstSlider 14 65 360 25 0 175 1'
  176.  
  177.     AddBox '5 102 409 54'
  178.     AddText 'CenterX 107 "Extend Last frame"'
  179.     AddGadget 'HProp ExtLastSlider 14 122 360 25 0 175 1'
  180.  
  181.     AddGadget 'Button OkayButton CenterX -5 Medium "Proceed"'
  182.  
  183.     InitGadget 'InsertGad 1'
  184.     MutualEx InsertGad AppendGad
  185.     Request NoOK NoCancel
  186.  
  187.     GadgetStatus ExtFirstSlider
  188.     ExtFirst = Result
  189.  
  190.     GadgetStatus InsertGad
  191.     If Result = 1 Then InsertBool = 1
  192.     GadgetStatus AppendGad
  193.     If Result = 1 Then InsertBool = 0
  194.  
  195.     GadgetStatus ExtLastSlider
  196.     ExtLast = Result
  197.  
  198.     Return ExtFirst ExtLast InsertBool
  199.  
  200. MakeExtWorkDrawer:
  201.     Address Command
  202.     Finder = Exists('Ram:ExtWork/')
  203.     If Finder = 0 Then Do
  204.         'Makedir Ram:ExtWork'
  205.         End
  206.     Return
  207.  
  208. GetIFF:
  209.     /* Get IFF Variables */
  210.     Iff = Root || Zero || Zero || Zero || A
  211.     If A < 10000 & A > 999 Then Iff = Root || A
  212.     If A < 1000 & A > 99 Then Iff = Root || Zero || A
  213.     If A < 100 & A > 9  Then Iff = Root || Zero || Zero || A
  214.     Return IFF
  215.  
  216. DoFirstExtend:
  217.     Address 'OpalPaint_Rexx'
  218.     Menu ENABLE
  219.     DisplayStatus 'Extending 1'
  220.  
  221.     Address Command
  222.     A = StartFrame
  223.     Call GetIFF()
  224.     'Copy ' || AnimPathName || IFF || ' Ram:ExtWork QUIET'
  225.  
  226.     If InsertBool = 1 Then Do
  227.         AA = EndFrame
  228.         Do Forever
  229.             A = (AA + ExtFirst)
  230.             Call GetIFF()
  231.             IFF2 = IFF
  232.             A = AA
  233.             Call GetIFF()
  234.             Finder = Exists(AnimPathName || IFF2)
  235.             If Finder = 1 Then Do
  236.                 Address 'OpalPaint_Rexx'
  237.                 Okay 'FATAL ERROR!  I cannot rename ' || IFF || ' to ' || IFF2 || '\nbecause ' || IFF2 || ' already exists!\n\nIt appears that the last frame number you chose is not\nthe last of the frames in your anims drawer.\n\nExiting...'
  238.                 Exit
  239.                 End
  240.  
  241.             'Rename ' || AnimPathName || IFF || ' ' || AnimPathName || IFF2 || ' QUIET'
  242.             AA = AA - 1
  243.             If AA = (StartFrame - 1) Then Leave
  244.             End
  245.  
  246.         Do AA = StartFrame to (StartFrame + ExtFirst)
  247.             A = AA
  248.             Call GetIFF()
  249.             'Copy Ram:ExtWork/' || IFF || ' ' || AnimPathName || ' QUIET'
  250.             A = (AA + 1)
  251.             Call GetIFF()
  252.             IFF2 = IFF
  253.             A = AA
  254.             Call GetIFF()
  255.             'Rename Ram:ExtWork/' || IFF || ' Ram:ExtWork/' || IFF2 || ' QUIET'
  256.             End
  257.         'Delete Ram:ExtWork/' || IFF2 || ' QUIET'
  258.         End
  259.  
  260.     If InsertBool = 0 Then Do
  261.         Corrector = 0
  262.         A = StartFrame - ExtFirst
  263.         Call GetIFF()
  264.         IFF2 = IFF
  265.         A = StartFrame
  266.         Call GetIFF()
  267.  
  268.         'Rename Ram:ExtWork/' || IFF || ' Ram:ExtWork/' || IFF2 || ' QUIET'
  269.  
  270.         Do AA = (StartFrame - ExtFirst) to (StartFrame - 1)
  271.             A = (AA + 1)
  272.             Call GetIFF()
  273.             IFF2 = IFF
  274.             A = AA
  275.             Call GetIFF()
  276.             Finder = Exists(AnimPathName || IFF)
  277.             If Finder = 1 Then Do
  278.                 Address 'OpalPaint_Rexx'
  279.                 Okay 'FATAL ERROR!  I cannot copy ' || IFF || ' to ' || AnimPathName || '\nbecause a ' || IFF || ' already exists there!\n\nExiting...'
  280.                 Exit
  281.                 End
  282.             If AA < 1 Then Corrector = Corrector + 1
  283.             If Finder = 0 & AA > 0 Then Do
  284.                 'Copy Ram:ExtWork/' || IFF || ' ' || AnimPathName || ' Quiet'
  285.                 End
  286.             'Rename Ram:ExtWork/' || IFF || ' Ram:ExtWork/' || IFF2 || ' Quiet'
  287.             End
  288.         'Delete Ram:ExtWork/' || IFF2 || ' QUIET'
  289.         End
  290.  
  291.     StartFrame = StartFrame + (ExtFirst - Corrector)
  292.     If InsertBool = 1 Then EndFrame = EndFrame + ExtFirst
  293.  
  294.     Address 'OpalPaint_Rexx'
  295.     Menu DISABLE
  296.     Return
  297.  
  298. DoLastExtend:
  299.     Address 'OpalPaint_Rexx'
  300.     Menu ENABLE
  301.     DisplayStatus 'Extending 2'
  302.  
  303.     Address Command
  304.     A = EndFrame
  305.     Call GetIFF()
  306.     'Copy ' || AnimPathName || IFF || ' Ram:ExtWork QUIET'
  307.  
  308.     Do AA = EndFrame to (EndFrame + (ExtLast - 1))
  309.         A = (AA + 1)
  310.         Call GetIFF()
  311.         IFF2 = IFF
  312.         A = AA
  313.         Call GetIFF()
  314.     Address Command
  315.         'Rename Ram:ExtWork/' || IFF || ' Ram:ExtWork/' || IFF2 || ' QUIET'
  316.         'Copy Ram:ExtWork/' || IFF2 || ' ' || AnimPathName || ' QUIET'
  317.         End
  318.  
  319.     Address 'OpalPaint_Rexx'
  320.     Menu DISABLE
  321.  
  322.     Return
  323.  
  324. DeleteExtWorkDrawer:
  325.     Address Command
  326.     'Delete Ram:ExtWork ALL QUIET'
  327.     Return
  328.  
  329. AllDone:
  330.     Address 'OpalPaint_Rexx'
  331.     ReqBuild '330 86 "Operation Complete!"'
  332.     AddBox '5 25 319 28'
  333.  
  334.     If ExtFirst > 0 Then AddText 'CenterX 30 "Added ' || (ExtFirst - Corrector) || ' to beginning of animation."'
  335.     If ExtLast > 0 Then AddText 'CenterX 40 "Added ' || ExtLast || ' to end of animation."'
  336.     If ExtFirst = 0 & ExtLast = 0 Then AddText 'CenterX 35 "No changes were made."'
  337.  
  338.     AddGadget 'Button OkayButton CenterX -5 Medium "Quit"'
  339.     Request NoOK NoCancel
  340.  
  341.     Return
  342.